/**
 * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
 * This file is a part of the CANN Open Software.
 * Licensed under CANN Open Software License Agreement Version 2.0 (the "License").
 * Please refer to the License for details. You may not use this file except in compliance with the License.
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
 * See LICENSE in the root of the software repository for the full text of the License.
 */

/*!
 * \file grouped_mat_mul_allto_allv_tiling_key.h
 * \brief
 */
#ifndef __GROUPED_MAT_MUL_ALLTO_ALLV_TILING_KEY_H__
#define __GROUPED_MAT_MUL_ALLTO_ALLV_TILING_KEY_H__

#include "ascendc/host_api/tiling/template_argument.h"

ASCENDC_TPL_ARGS_DECL(
    GroupedMatMulAlltoAllv,
    ASCENDC_TPL_BOOL_DECL( // 共享专家mm计算
        TILINGKEY_COMPUTE_MATMUL, 0, 1),
    ASCENDC_TPL_BOOL_DECL( // gmm计算转置场景
        TILINGKEY_GROUPED_MATMUL_TRANS, 0, 1),
    ASCENDC_TPL_BOOL_DECL( // mm计算转置场景
        TILINGKEY_MATMUL_TRANS, 0, 1),
);


ASCENDC_TPL_SEL(
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_COMPUTE_MATMUL, 0),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_GROUPED_MATMUL_TRANS, 0),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_MATMUL_TRANS, 0),
    ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_COMPUTE_MATMUL, 0),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_GROUPED_MATMUL_TRANS, 0),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_MATMUL_TRANS, 1),
    ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_COMPUTE_MATMUL, 0),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_GROUPED_MATMUL_TRANS, 1),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_MATMUL_TRANS, 0),
    ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_COMPUTE_MATMUL, 0),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_GROUPED_MATMUL_TRANS, 1),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_MATMUL_TRANS, 1),
    ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_COMPUTE_MATMUL, 1),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_GROUPED_MATMUL_TRANS, 0),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_MATMUL_TRANS, 0),
    ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_COMPUTE_MATMUL, 1),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_GROUPED_MATMUL_TRANS, 0),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_MATMUL_TRANS, 1),
    ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_COMPUTE_MATMUL, 1),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_GROUPED_MATMUL_TRANS, 1),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_MATMUL_TRANS, 0),
    ),
    ASCENDC_TPL_ARGS_SEL(
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_COMPUTE_MATMUL, 1),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_GROUPED_MATMUL_TRANS, 1),
        ASCENDC_TPL_BOOL_SEL(TILINGKEY_MATMUL_TRANS, 1),
    ),
); // GroupedMatMulAlltoAllv

#endif // __GROUPED_MAT_MUL_ALLTO_ALLV_TILING_KEY_H__